home *** CD-ROM | disk | FTP | other *** search
/ APDL Other Worlds / APDL Other Worlds Collection.iso / SF3000 / Extras / Documents / FileFormats < prev    next >
Encoding:
Text File  |  2003-10-24  |  21.2 KB  |  643 lines

  1. *************************************
  2. |         Star Fighter 3000         |
  3. |       Documentation Project       |
  4. *************************************
  5. |      Reference 1: File Formats    |
  6. |       Changed:  CJB 23.10.03      |
  7. *************************************
  8.  
  9. N.B. This text is best viewed at a display width of 77 columns.
  10.      To create an index do a 'List of found' search for ">>".
  11.  
  12. -----------------------------------------------------------------------------
  13. >> Contents:
  14.    =========
  15.  
  16. 1.1 Polygon colours
  17. 1.2 [Polygonal objects set]
  18. 1.3 Ground map
  19. 1.4 Ground map overlay
  20. 1.5 Objects grid
  21. 1.6 Objects grid overlay
  22. 1.7 Sky colour definition
  23. 1.8 Mission data
  24.   1.8.1 Ship performance data
  25.   1.8.2 Ship adding data
  26.   1.8.3 Ground objects trigger
  27.   1.8.4 Flightpath
  28. 1.9 Planet graphics set
  29. 1.10 Map tile graphics set
  30. 1.11 Map animations
  31. 1.12 Hill colours
  32. 1.13 Music data
  33.  
  34. -----------------------------------------------------------------------------
  35. >> 1.1 Polygon colours
  36.    ===================
  37.  
  38.    Filetype: &154 ('Fednet')
  39.    Location: "Landscapes.Palette"
  40. Compression: Yes
  41.     Purpose: Maps the 320 logical colours used on polygonal objects in the
  42.              game to the standard static 256 colours available in mode 13.
  43.  
  44. Description:
  45.  
  46.   Each entry in the palette is a single byte, being a mode 13 colour
  47. number. The first 256 entries are the static colours, and map directly to the
  48. standard 256 colours.
  49.  
  50.   In addition, there are 44 entries for flashing colours - such as the
  51. engine exhausts of space craft, towers on the ground, and navigation lights.
  52. These entries are grouped into words, each containing four colour numbers.
  53.  
  54.   Finally, 20 more static colours are available for applying different
  55. liveries to the player's spacecraft, such as the strategic bomber, command
  56. ship or fast ship.
  57.  
  58.   Note that this filetype is also used for other types of compressed Fednet
  59. files, for instance the game title pictures, compressed game code, and Stunt
  60. Racer 2000 tracks.
  61.  
  62.   Total length of polygon colours file: 320 bytes
  63.  
  64. Offset  Data
  65. +0...   Static colours (standard 256 colours)
  66.  
  67. +256... Engine colours :
  68.   +256... Player's engine (4 colours)
  69.   +260... Fighter's engine (4 colours)
  70.   +264... Cruiser's engine (4 colours)
  71.   +268... Super fighter's engine (4 colours)
  72.  
  73. +272... Fast flashing lights :
  74.   +272... Enemy ships (4 colours)
  75.   +276... Friendly ships (4 colours)
  76.   +280... Player's ship (4 colours)
  77.  
  78. +284... Medium flashing lights :
  79.   +284... Ground objects A (4 colours)
  80.   +288... Ground objects B (4 colours)
  81.   +292... Miscellaneous (8 colours)
  82.  
  83. +300... Player's ship (Predator) livery
  84.  
  85. -----------------------------------------------------------------------------
  86. >> 1.2 Polygonal objects set
  87.    =========================
  88.  
  89.    Filetype: &300
  90.    Location: "LandScapes.Graphics"
  91. Compression: Yes
  92.     Purpose: Defines a complete set of polygonal objects - including all
  93.              fighters, spaceships, ground installations, bonus coins etc.
  94.              These graphics sets are interchangeable.
  95. Description: Undocumented
  96.  
  97. -----------------------------------------------------------------------------
  98. >> 1.3 Ground map
  99.    ==============
  100.  
  101.    Filetype: &400
  102.    Location: "LandScapes.Base.SprScape"
  103. Compression: Yes
  104.     Purpose: Holds the ground tiles map for a base map.
  105. Description:
  106.  
  107.   All maps are 256 tiles wide by 256 tiles long. Each tile is represented by
  108. its reference number (0-254), and occupies a single byte in the map. Thus
  109. maps require exactly 64 Kb of storage when decompressed into memory.
  110.  
  111.   The interpretation of a ground map depends on the map graphics set asked
  112. for by the mission data; see section 1.8. Only very simple maps will work
  113. correctly with all graphics sets.
  114.  
  115. Offset  Data
  116. +0      ref of tile at (0,0)
  117. +1      ref of tile at (0,1)
  118. +2      ref of tile at (0,2)
  119. ...etc
  120. +256    ref of tile at (1,0)
  121. +257    ref of tile at (1,1)
  122. +258    ref of tile at (1,2)
  123. ...etc
  124.  
  125. -----------------------------------------------------------------------------
  126. >> 1.4 Ground map overlay
  127.    ======================
  128.  
  129.    Filetype: &401
  130.    Location: "LandScapes.Level.SprScape.E/M/H"
  131. Compression: Yes
  132.     Purpose: Patches a base ground map with the features required for a
  133.              specific mission.
  134.  
  135. Description:
  136.  
  137.   The file format is essentially the same as for the base map files, except
  138. that bytes with the value 255 are ignored. This effectively provides a mask
  139. to preserve the base map, when the overlay map is overlayed onto it.
  140.  
  141. -----------------------------------------------------------------------------
  142. >> 1.5 Objects grid
  143.    ================
  144.  
  145.    Filetype: &402
  146.    Location: "LandScapes.Base.FxdObj"
  147. Compression: Yes
  148.     Purpose: Holds the positions of the ground objects on the base maps.
  149. Description:
  150.  
  151.   The polygonal objects are mapped onto a grid 128 wide by 128 long, each
  152. represented in the grid by a single byte, which is the reference number of
  153. that object. Thus the decompressed grid size is 16384 bytes (16k).
  154.  
  155.   Object numbers may be in the range 0-254, and the object with reference 0
  156. is a blank. This theoretically allows up to 253 different types of ground
  157. object per map, though in fact many are hill & cloud references.
  158.  
  159.   The locations on the objects grid correspond to the centre of groups of
  160. four tiles on the ground map, being mapped at exactly half the resolution.
  161.  
  162.   The interpretation of an objects grid depends on the polygonal objects set
  163. asked for by the mission data; see section 1.8. Only very simple grids will
  164. work correctly with all objects sets.
  165.  
  166. Offset  Data
  167. +0      ref of object at (0,0)
  168. +1      ref of object at (0,1)
  169. +2      ref of object at (0,2)
  170. ...etc
  171. +128    ref of object at (1,0)
  172. +129    ref of object at (1,1)
  173. +130    ref of object at (1,2)
  174. ...etc
  175.  
  176. -----------------------------------------------------------------------------
  177. >> 1.6 Objects grid overlay
  178.    ========================
  179.  
  180.    Filetype: &403
  181.    Location: "LandScapes.Level.FxdObj.E/M/H"
  182. Compression: Yes
  183.     Purpose: Patches a base objects grid with the features required
  184.              for a specific mission.
  185. Description:
  186.  
  187.   The file format for the objects grid overlays is virtually identical to
  188. that for the base objects grid. Similarly to the ground map overlay, bytes
  189. set to 255 are treated as a protective mask when overlaying the patch onto
  190. the base map.
  191.  
  192.   The objects grid overlay size is 16384 bytes (16k).
  193.  
  194. -----------------------------------------------------------------------------
  195. >> 1.7 Sky colour definition
  196.    =========================
  197.  
  198.    Filetype: &404 ('SkyCols')
  199.    Location: "LandScapes.Sky"
  200. Compression: Yes
  201.     Purpose: Stores the colours used to paint a planetary atmosphere.
  202. Description:
  203.  
  204.   Total length of sky file: 512 bytes
  205.  
  206. Header:
  207. Offset  Data
  208. +0      Min height of sky
  209. +4      Start height of star plot
  210.  
  211. ...followed by 126 shades, each 4 pixels, 8bpp (may be dithered)
  212.  
  213. -----------------------------------------------------------------------------
  214. >> 1.8 Mission data
  215.    ================
  216.  
  217.    Filetype: &405
  218.    Location: "LandScapes.Missions.E/M/H"
  219. Compression: Yes
  220.     Purpose: Stores all details about a mission, including the text
  221.              briefing, location briefings, details of flying ships,
  222.              flightpaths, ship performance data, map and graphics to use.
  223. Description:
  224.  
  225.   Total length of mission file: 7060 bytes
  226.  
  227. Offset  Data
  228. +0      X starting position of player's ship
  229. +1      Y starting position of player's ship
  230. +2      Starting height of player's ship
  231. +3      Start rotation of player's ship (0-7)
  232.  
  233. +4      Special ship for this mission? (0=No, 1=Yes)
  234. If special ship, then details follow:
  235. +5      Laser power
  236. +6      Engine power
  237. +7      Control rating
  238. +8      Shields strength
  239. +9      Number of A-T-A missiles
  240. +10     Number of A-T-G missiles
  241. +11     Number of aerial mines
  242. +12     Number of freefall bombs
  243. +13     Number of wide area laser shots
  244. +14     Number of multi-missiles
  245. +15     Ship type we are flying
  246.  
  247. +16     Number of hits against Fednet allowed
  248. +17     ?
  249. +18     ?
  250. +19     Is this a space/cyber mission? (0=No, 1=Yes)
  251. +20...  Cloud colours
  252. +22     Do we need to dock to finish? (0=No, 1=Yes)
  253. +23     Are we starting docked? (255=No else Yes)
  254.  
  255. +24(w)  Number of ground object triggers
  256. +28...  Ground triggers... (see 1.8.3 for data format)
  257. +284(w) Number of location briefings
  258. +288... Locations list...
  259. +352(w) Mission time
  260. +356(w) Defence time
  261.  
  262. General mission difficulty:
  263. +360    Laser fire frequency
  264. +361    Laser fire type
  265. +362
  266.   [b0-b3]       Type of fighter to launch from big ships/hangars
  267.   [b4-b7]       Fighters per hangar
  268. +363    Hangar launch frequency
  269.  
  270. +364(w) Mission level number
  271. +368(w) Mission pyramid number
  272.  
  273. Special mission variables:
  274. +372    Is scanner knackered? (0=No, 1=Yes)
  275. +373    Prevent damage to ground? (0=No, 1=Yes)
  276. +374... Free for future expansion of special variables
  277.  
  278. Ship performance data (7 types, 32 bytes each):
  279. +404... Type 1 (fighter) data (see 1.8.1 for data format)
  280. +436... Type 2 (fighter) data
  281. +468... Type 3 (fighter) data
  282. +500... Type 4 (fighter) data
  283. +532... Type 13 (big ship) data
  284. +564... Type 14 (big ship) data
  285. +596... Type 15 (big ship) data
  286.  
  287. Ships starting this mission:
  288. +628(w) Number of ships flying (up to 32 ships, 32 bytes each))
  289. +632... Ship 1 position and details (see 1.8.2 for data format)
  290. +664... Ship 2 position and details
  291. +696... Ship 3 position and details
  292.   +32   Ship x position and details...
  293.  
  294. Flightpaths:
  295. +1656(w) Number of flightpaths (up to 8 flightpaths, 260 bytes each)
  296. +1660..  Flightpath 1 (see 1.8.4 for data format)
  297. +1920..  Flightpath 2
  298. +2180..  Flightpath 3
  299.   +260   Flightpath x
  300.  
  301. Associated files: (each filename is 11 chars+terminator)
  302. +3740.. Ground map filename
  303. +3752.. Ground map overlay filename
  304. +3764.. Objects grid filename
  305. +3776.. Objects grid overlay filename
  306. +3788.. Map animations filename
  307. +3800.. Map tile graphics set filename
  308. +3812.. Polygonal objects set filename
  309. +3824.. Sky colour definition filename
  310. +3836.. Planet graphics filename
  311. +3848.. Palette filename
  312. +3860.. Hill colours filename
  313.         (This data is deliberately encoded)
  314.  
  315. Mission briefing:
  316. +3872(w) No. of briefing strings?
  317. +3876(w) No. of visit strings?
  318. +3880(w) Offset to text block 1 (from this address)
  319. +3884(w) Offset to text block 2
  320. +3888(w) Offset to text block 3...etc (19 offsets)
  321. +3956... Title string (obsolete - is usually the 1st text block)
  322. +3988... 3 Kb of text data (see 1.8.5 for data format)
  323.  
  324. >> 1.8.1 Ship performance data
  325.  
  326. Offset  Data
  327. +0(w)   Chance of firing lasers (out of 2048)
  328. +4(w)   Laser type (~0-8)
  329. +8(w)   FT: Engine power (~5000-35000, 8192=low, 32768=missile)
  330. +12(w)  FT: Manoeuvrability (~2-30)
  331. +16(w)  Shield strength (~50-5000, 999999=remote generator)
  332. +20(w)  FT: Chance of firing A-T-A missile (out of 2048)
  333. +24(w)  BS: Chance of launching fighter (out of 2048)
  334. +28(w)  BS: How many fighters can we launch? (~0-10)
  335.  
  336. >> 1.8.2 Ship adding data
  337.  
  338. Offset  Data
  339. +0(w)   X position
  340. +4(w)   Y position
  341. +8(w)   Height
  342. +12     Type (0-4, 13-15)
  343. +13     First flags byte:
  344.   [b0-b1]       Start mode (0=Attack, 1=Flightpath, 2=Follow ship)
  345.   [b2]          Allegiance (0=Enemy, 1=Friendly)
  346.   [b3]          Cloaking on? (0=No, 1=Yes)
  347. +14     Start point in flightpath
  348. +15     Ship/flightpath to follow
  349.   If flightpath,  then path number (0-7)
  350.   If ship follow, then ship number (0-15, 255=follow players ship)
  351. +16(w)  X follow offset
  352. +20(w)  Y follow offset
  353. +24(w)  Height follow offset
  354. +28     Mission importance (0=None,
  355.                             1=Must kill,
  356.                             2=Must survive,
  357.                             3=Must survive and finish flightpath,
  358.                             4=No special datablock
  359.                             5=Must not land)
  360. +29     Second flags byte:
  361.   [b0]          Ignore incoming attack? (0=No, 1=Yes)
  362.   [b1]          On flightpath, player proximity action
  363.                 (0=Ignore, 1=Join formation (Fr) or attack(En))
  364. +30     Big ship movement pattern (0=fly around,
  365.                                    1=spinning top space station
  366.                                    2=rotating wheel space station
  367.                                    3=don't move)
  368. +31     Direction and pilot
  369.   [b0-b3]       Pilot's name (0-15)
  370.   [b4-b7]       Starting direction (0-15)
  371.  
  372. >> 1.8.3 Ground objects trigger
  373.  
  374. Offset  Data
  375. +0      X position of check (on objects grid)
  376. +1      Y position of check (on objects grid)
  377. +2      Type of trigger (activated when object destroyed)
  378.           1 = Multi A-T-A missiles bonus
  379.           2 = Megalaser shots bonus
  380.           3 = Freefall bombs bonus
  381.           4 = Aerial mines bonus
  382.           5 = Set defences inactive timer
  383.           6 = Chain reaction (chain to previous trigger in list)
  384.           8 = Reduce shields of ship class to 256 (used for remote shield
  385. generators)
  386.           9 = Cash bonus
  387.          10 = Set mission timer (used for power-surge twin towers)
  388.          11 = Fednet building (should protect)
  389.          12 = Mission target (should destroy)
  390.          13 = Fix scanners (used for radar-jamming installations)
  391. +3      Parameter (meaning depends on trigger type)
  392.           1 : Number of missiles to award
  393.           2 : Number of megalaser shots to award
  394.           3 : Number of bombs to award
  395.           4 : Number of mines to award
  396.           5 : Extra seconds of inactive time, or 255 = activate defences
  397.           6 : Time (number of frames/2) until blow next object
  398.           8 : Ship type to cripple
  399.           9 : Credits/10 to award
  400.          10 : Seconds until mission fail
  401.  
  402. >> 1.8.4 Flightpath
  403.  
  404. Offset  Data
  405. +0(w)   Number of points in flightpath (up to 64!)
  406. +4...   Point 1 (4 bytes)
  407.   +0    X coordinate
  408.   +1    Y coordinate
  409.   +2    Z coordinate
  410.   +3    Free
  411. +8...   Point 2 (4 bytes)
  412. +12...  Point 3 (4 bytes)
  413. +16...  Point 4...etc
  414.  
  415. >> 1.8.5 Text data block
  416.  
  417. Offset  Data
  418. +0...   Header data (undocumented)
  419. +48...  String of characters (terminated by 255)
  420.  
  421. -----------------------------------------------------------------------------
  422. >> 1.9 Planet graphics set
  423.    =======================
  424.  
  425.    Filetype: &406 ('Planets')
  426.    Location: "LandScapes.Planets"
  427. Compression: Yes
  428.     Purpose: Contains the images of distant planets painted onto the sky.
  429. Description:
  430.  
  431.   A planets file (which may hold up to two images) begins with a 36-byte
  432. header. The 1st word of this is the number of the last planet in the file
  433. (e.g. 0 or 1).
  434.  
  435.   The 2nd and 3rd words are X and Y screen offsets for the first planet, and
  436. the 4th and 5th words are screen offsets for the second planet in the file
  437. (if any). The game does not currently pay any attention to these offsets
  438. when painting planets to the screen.
  439.  
  440.   The 6th and 7th words of the header are offsets from the start of the
  441. header to the first planet image and 'mask', respectively. This data is held
  442. in words 8 and 9 for the second planet. The 'mask' offsets are obsolete,
  443. though conventionally they point to a duplicate of the planet image, stored
  444. after the main bitmap.
  445.  
  446.   The image data is stored in the file after the header. The data for a
  447. single planet is 1296 bytes long, or 2592 bytes including the redundant
  448. 'mask' data. Each bitmap is 36x36 pixels, 8 bpp, and assumes the standard
  449. 256 colour RISC OS palette.
  450.  
  451. Offset  Data
  452. +0      Number of planet images in file-1
  453. +4       Planet 0 X screen offset  }
  454. +8       Planet 0 Y screen offset  } not currently
  455. +12     [Planet 1 X screen offset] } used by renderer
  456. +16     [Planet 1 Y screen offset] }
  457. +20      Offset to planet 0 image
  458. +24      Offset to planet 0 mask (obsolete)
  459. +28     [Offset to planet 1 image]
  460. +32     [Offset to planet 1 mask (obsolete)]
  461.  
  462. ...followed by bitmap images, each 36x36 pixels, 8bpp, 1296 bytes
  463.  
  464. -----------------------------------------------------------------------------
  465. >> 1.10 Map tile graphics set
  466.    ==========================
  467.  
  468.    Filetype: &407 ('MapTiles')
  469.    Location: "LandScapes.Sprites"
  470. Compression: Yes
  471.     Purpose: Contains a set of map tile graphics to be used for rendering a
  472.              certain type of ground map, and defines splash animations for
  473.              that tile set.
  474. Description:
  475.  
  476.   Map graphics sets may be of variable length when decompressed, since they
  477. do not contain a fixed number of tiles. The tiles are refered to by their
  478. reference number (position in the tiles data), which must be within the range
  479. 0-254 due to the map format.
  480.  
  481.   The initial 16 bytes of the data are a header for the tiles data. The
  482. first word is the number of the last tiles in the file. Following this,
  483. bytes 4 to 7 contain the tile numbers for a splash animation, used when
  484. the ground is damaged (e.g. by laser fire). Bytes 8-11 specify an
  485. alternative splash animation.
  486.  
  487.   This is used where the tile at the ground hit position is one of the tiles
  488. given specified in the alternate splash triggers (bytes 12-15). These four
  489. values are also tile numbers, but this time each is the first of a pair
  490. n,(n+1). So '1' would specify both tiles 1 and 2 as triggers for the
  491. alternative splash.
  492.  
  493.   By packing the triggers in this way, up to eight tiles can be specified -
  494. just enough to allow a second type of terrain (water, lava) to react to
  495. hits differently (e.g. splash rather than scorched earth). Conventionally, at
  496. least four of these trigger tiles will be assigned to the actual tiles of
  497. the alternative splash animation. However the "Death" tiles set breaks this
  498. rule to obtain an unusual effect.
  499.  
  500.   The tile graphics are stored sequentially after the header (+16). Each
  501. bitmap is 16x16 pixels, at a colour depth of 8bpp (e.g. 256 bytes). They
  502. assume the standard RISC OS 256 colour palette.
  503.  
  504. Header:
  505. Offset  Data
  506. +0(w)   Number of tiles in file-1
  507. +4(w)   Splash animation (4x1 byte tile numbers)
  508. +8(w)   Alternate splash animation (4x1 byte tile numbers)
  509. +12(w)  Alternate splash triggers (4x1 byte tile n,n+1 pairs)
  510.  
  511. ...followed by tile graphics, each 16x16 pixels, 8bpp, 256 bytes
  512.  
  513. -----------------------------------------------------------------------------
  514. >> 1.11 Map animations
  515.    ===================
  516.  
  517.    Filetype: &408
  518.    Location: "LandScapes.Level.Animations.E/M/H"
  519. Compression: Yes
  520.     Purpose: Holds a list of ground map animations for a given mission.
  521.              Unlike ground and objects maps, there is no concept of a
  522.             'base' animations file.
  523. Description:
  524.  
  525. Header:
  526. Offset  Data
  527. +0(w)   Number of animations
  528. +4(w)   Unused
  529. +8(w)   Unused
  530. +12(w)  Unused
  531.  
  532. ...followed by animations data (see format below), each block 28 bytes long
  533.  
  534. Animation data:
  535. Offset  Data
  536. +0(w)   Offset into *expanded* ground map, e.g. ((y*256)+x)*4
  537. +4(w)   Timer counter (counts down to next update)
  538. +8(h)   Reset counter (conventionally == timer counter, in file)
  539. +10(h)  Frame number 0-3 (conventionally 0, in file)
  540. +12(w)  Frame 0 tile number (or 255 for no change)
  541. +16(w)  Frame 1 tile number (or 255 for no change)
  542. +20(w)  Frame 2 tile number (or 255 for no change)
  543. +24(w)  Frame 3 tile number (or 255 for no change)
  544.  
  545. -----------------------------------------------------------------------------
  546. >> 1.12 Hill colours
  547.    =================
  548.  
  549.    Filetype: &154 ('Fednet')
  550.    Location: "LandScapes.Hill"
  551. Compression: Yes
  552.     Purpose: Gives the colour palette used for the polygonal mountains.
  553. Description:
  554.  
  555.   Three colour bands of 12 entries each, giving a total of 36 colours. The
  556. entries are 1 byte each, and refer to the colour numbers of the standard 256
  557. colour RISC OS palette.
  558.  
  559.   Total length of hill colours file: 36 bytes
  560.  
  561. Offset  Data
  562. +0      Band 1, colour 1
  563. +1      Band 1, colour 2
  564. +2      Band 1, colour 3...
  565. +12...  Band 2 colours
  566. +24...  Band 3 colours
  567.  
  568.   Note that this filetype is also used for other types of compressed Fednet
  569. files, for instance the game title pictures, compressed game code, and Stunt
  570. Racer 2000 tracks.
  571.  
  572. -----------------------------------------------------------------------------
  573. >> 1.13 Music data
  574.    ===============
  575.  
  576.    Filetype: &154 ('Fednet')
  577.    Location: "Music"
  578. Compression: Yes
  579.     Purpose: The track data used by the SFX_Handler module music player.
  580. Description:
  581.  
  582. Header:
  583. Offset  Data
  584. +0      Tempo (metronome value in centiseconds)
  585. +1...   Unused
  586. +16...  16 byte table mapping logical to actual voices
  587. +32(w)  Number of sheets in track
  588. +36(w)  Number of sheets to play (obsolete)
  589. +40...  64 byte play order for sheets (terminated by 255)
  590.  
  591. ...followed by sheets data (see format below), each sheet 1024 bytes long
  592.  
  593. Sheet:
  594. Offset  Data
  595. +0...   64 beats of command data (see format below), each beat being 16 bytes
  596.  
  597. Beats:
  598. Offset  Data
  599. +0...   Channel 0 command (0 for none)
  600. +4...   Channel 1 command (0 for none)
  601. +8...   Channel 2 command (0 for none)
  602. +12...  Channel 3 command (0 for none)
  603.  
  604. Commands:
  605. Offset  Data
  606. +0      Note number 0-11 (b0-3)
  607. +1      Octave number 0-7 (b0-3) and Volume 0-15 (b4-7)
  608. +2      Voice number (b0-3) and Action (b4-7)
  609. +3      Number of repeats (b4-7)
  610.  
  611.   The sample number to be used is looked up from the specified voice number
  612. using the logical-to-actual-voice table in the track header.
  613.  
  614.   The note number is converted to a 12-bit pitch using an internal note-to-
  615. pitch table (see below). The octave number is then put into bits 12-14 to
  616. give a 15-bit fractional octave number. Finally, any tuning increment
  617. (specified for that sample upon loading) is added on.
  618.  
  619. Note 12-bit pitch
  620. 0    0
  621. 1    341
  622. 2    682
  623. 3    1024
  624. 4    1365
  625. 5    1706
  626. 6    2048
  627. 7    2389
  628. 8    2730
  629. 9    3072
  630. 10   3413
  631. 11   3754
  632.  
  633.   If action > 1 then a glissando effect is triggered, sliding all instances
  634. of the specified sample towards the specified pitch. The volume and repeats
  635. parameters are ignored.
  636.  
  637.   Otherwise a note is forced on the channel, using the specified sample,
  638. volume, pitch and repeats parameters.
  639.  
  640.   Note that this filetype is also used for other types of compressed Fednet
  641. files, for instance the game title pictures, compressed game code, and Stunt
  642. Racer 2000 tracks.
  643.